home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / misc / football / user / updatescores.rexx < prev    next >
OS/2 REXX Batch file  |  1999-11-29  |  7KB  |  286 lines

  1. /* Mode=Run */
  2. /* ***********************************************************************
  3.  
  4.    EXTRACT PROGRAM FOR FOOTBALL REXX SUITE
  5.   ----------------------------------------
  6.                    Copyright  Mark Naughton 1996
  7.  
  8.  
  9. Version    Date     History
  10. --------------------------------------------------------------------------
  11.  
  12.  1.0       260996   Created. Extracts results from schedule.learn and then
  13.                     recreates schedule.df
  14.  1.1       270996   Tidied, with info messages. Changed to use new filenames.
  15.                     'Teams.sflearn' is read in, the data is extracted, saved
  16.                     and then sorted, reread and then updated in a much faster
  17.                     way. Previous took 35 secs whereas this took 5 secs! Also
  18.                     would not work because of problems in the loop as all
  19.                     data has to be in order and the counter was only changed
  20.                     when it put one in - SHOULD BE when there's a match
  21.                     regardless of whether its been played or not.
  22.  1.2       121196   Updated to accept arguments so it can become a component
  23.                     of FOOTBALL. Removed all messages.
  24.            131196   Added checks for files - if not found, exits without
  25.                     a message.
  26.            201196   Added Iterate as teams can now play each other more
  27.                     than twice so that other matches (to be played) aren't
  28.                     written over.
  29.            250899   Added error msg to file checks. Added title.
  30.            110999   Fixed bug where matches were overwritten because when
  31.                     teams play each other more than twice, there are more
  32.                     than one home schedule for each team - the code skipped
  33.                     over the played matches and overwrote the second schedule.
  34.            110999   Converted to use locale. Some error messages, before
  35.                     reading the locale, will still be in English.
  36.  
  37. **************************************************************************
  38.  
  39. Procedure
  40. ---------
  41.  
  42. 1. Check files exist. Open Learn file and output file.
  43. 2. Read all data from Learn (without '*') and write to output file.
  44. 3. Close files.
  45. 4. Call external program to sort the output file.
  46. 5. Open output file and read into an array. Close file.
  47. 6. Delete output file.
  48. 7. Open Schedule file and read into an array. Close file.
  49. 8. Update Schedule array with data from Learn but only if a match hasn't
  50.    been played.
  51. 9. Write to Schedule file. Close file. Exit.
  52.  
  53. ************************************************************************** */
  54. PARSE ARG league_file
  55.  
  56. version      = 1
  57. input_file   = '.sflearn'
  58. input2_file  = '.sf'
  59. input3_file  = '.df'
  60. output_file  = 'Data/Teams.temp'
  61. autosched    = "*AUTOSCHD="
  62. separator    = '*'
  63. sdlines.     = '???'
  64. selines.     = '???'
  65. sdcount      = 0
  66. secount      = 0
  67. autos        = 0
  68. not_played   = '__   __'
  69. league_file  = "Data/" || league_file
  70.  
  71. if open(datafile,"Data/Football.locale",'r') then do
  72.    line = readln(datafile)
  73.    locdir = strip(line)
  74.    close(datafile)
  75. end
  76. else do
  77.    say
  78.    say "ERROR :    (UpdateScores)"
  79.    say
  80.    say "Cannot read 'Data/Football.locale' for the locale settings."
  81.    exit
  82. end
  83.  
  84. locdir = locdir"User/UpdateScores.data"
  85.  
  86. if open(datafile,"ENV:FootballRXPath",'r') then do
  87.    line = readln(datafile)
  88.    rxdir = strip(line)
  89.    close(datafile)
  90. end
  91. else
  92.    rxdir = "SYS:Rexxc/"
  93.  
  94. if exists(locdir) > 0 then do
  95.   address command rxdir'rx 'locdir
  96.   VarCount = getclip('VarCount')
  97.   do i = 1 to VarCount
  98.     interpret getclip('var.'i)
  99.   end
  100. end
  101. else do
  102.    say
  103.    say "ERROR :    (UpdateScores)"
  104.    say
  105.    say "Cannot find '"locdir"' to read locale settings."
  106.    exit
  107. end
  108.  
  109. if exists(league_file || input_file) = 0  then do
  110.    say
  111.    say us_error
  112.    say
  113.    say us_t1"'"league_file || input_file"'."
  114.    exit
  115. end
  116.  
  117. if exists(league_file || input2_file) = 0 then do
  118.    say
  119.    say us_error
  120.    say
  121.    say us_t1"'"league_file || input2_file"'."
  122.    exit
  123. end
  124.  
  125. if exists(league_file || input3_file) = 0 then do
  126.    say
  127.    say us_error
  128.    say
  129.    say us_t1"'"league_file || input3_file"'."
  130.    exit
  131. end
  132.  
  133. if open(datafile,league_file || input3_file,'r') then do
  134.    do while ~eof(datafile)
  135.       line = readln(datafile)
  136.       if pos(autosched,line) > 0 then
  137.          autos = 1
  138.    end
  139.    close(datafile)
  140. end
  141. else do
  142.    say
  143.    say us_error
  144.    say
  145.    say us_t2"'"league_file || input3_file"'"us_t3
  146.    exit
  147. end
  148.  
  149. if autos = 1 then do
  150.    say
  151.    say us_error
  152.    say
  153.    say us_t4", "league_file||input3_file", "us_t5
  154.    say us_t6
  155.    say us_t7" 'UpdateScheduleScores'."
  156.    say
  157.    exit
  158. end
  159.  
  160. if open(datafile,league_file || input_file,'r') then do
  161.    if open(datafile2,output_file,'w') then do
  162.       do while ~eof(datafile)
  163.          line = readln(datafile)
  164.          line = strip(line)
  165. /*         if pos(separator,line) = 0 & words(line) > 0 then */
  166.          if pos(separator,line) = 0 & line ~= "" then
  167.             writeln(datafile2,line)
  168.       end
  169.       close(datafile2)
  170.    end
  171.    else do
  172.       say
  173.       say us_error
  174.       say
  175.       say us_t8" '"output_file"' "us_t9
  176.       exit
  177.    end
  178.    close(datafile)
  179. end
  180. else do
  181.    say
  182.    say us_error
  183.    say
  184.    say us_t2"'"league_file || input_file"'"us_t3
  185.    exit
  186. end
  187.  
  188. address command 'Exec/footsort T'
  189.  
  190. if open(datafile,output_file,'r') then do
  191.    do while ~eof(datafile)
  192.       line = readln(datafile)
  193.       line = strip(line)
  194.       if line ~= "" then do
  195.          secount         = secount + 1
  196.          selines.secount = line
  197.       end
  198.    end
  199.    close(datafile)
  200. end
  201. else do
  202.    say
  203.    say us_error
  204.    say
  205.    say us_t2"'"output_file"'"us_t3
  206.    exit
  207. end
  208.  
  209. address command 'delete >NIL: 'output_file
  210.  
  211. sdcount = 1
  212. if open(datafile3,league_file || input2_file,'r') then do
  213.    do while ~eof(datafile3)
  214.        line = readln(datafile3)
  215.        line = strip(line)
  216.        if line ~= "" then do
  217.           sdlines.sdcount = line
  218.           sdcount         = sdcount + 1
  219.        end
  220.    end
  221.    close(datafile3)
  222. end
  223. else do
  224.    say
  225.    say us_error
  226.    say
  227.    say us_t2"'"league_file || input2_file"'"us_t3
  228.    exit
  229. end
  230.  
  231. i    = 0
  232. done = 0
  233. k    = 0
  234.  
  235. say
  236. say center(us_t10,78)
  237. say "-------------------------------------------------------------------------------"
  238. say
  239. say
  240. say us_t12" :"
  241. say
  242.  
  243. do j=1 to sdcount
  244.    shome = strip(substr(sdlines.j,1,30))
  245.    saway = strip(substr(sdlines.j,41,30))
  246.    do i=1 to secount
  247.       home  = strip(substr(selines.i,1,30))
  248.       away  = strip(substr(selines.i,41,30))
  249.       if strip(sdlines.j) == strip(selines.i) then do
  250.          k = k + 1
  251.          leave
  252.       end
  253.       else do
  254.          if shome = home & saway = away & pos(not_played,sdlines.j) > 0 then do
  255.             sdlines.j = selines.i
  256.             say "   >>"selines.i"<<"
  257.             k = k + 1
  258.             leave
  259.          end
  260.       end
  261.    end
  262.    if k = secount then leave
  263. end
  264. say
  265. say
  266. say "-------------------------------------------------------------------------------"
  267.  
  268.  
  269. if open(datafile3,league_file || input2_file,'w') then do
  270.    do j=1 to sdcount-1
  271.       if j < sdcount-1 then
  272.          writeln(datafile3,sdlines.j)
  273.       else
  274.          writech(datafile3,sdlines.j)
  275.    end
  276.    close(datafile3)
  277. end
  278. else do
  279.    say
  280.    say us_error
  281.    say
  282.    say us_t2"'"league_file || input2_file"'"us_t11
  283.    exit
  284. end
  285.  
  286. exit